//package leetcode;
//
//import java.util.*;
//
//class TreeNode {
//    int val;
//    TreeNode left;
//    TreeNode right;
//
//    public TreeNode(int val) {
//        this.val = val;
//    }
//}
//
//class Solution {
//    public List<List<Integer>> zigzagLevelOrder(TreeNode root) {
//        List<List<Integer>> ans = new LinkedList<List<Integer>>();
//
//        if (root == null) {
//            return ans;
//        }
//
//        Queue<TreeNode> queue = new ArrayDeque<TreeNode>();
//        queue.offer(root);
//        boolean isOrderLeft = true;
//
//        while (!queue.isEmpty()) {
//            Deque<Integer> levelList = new LinkedList<Integer>();
//            int size = queue.size();
//            for (int i = 0; i < size; i++) {
//                TreeNode node = queue.poll();
//                if (isOrderLeft) {
//                    levelList.offerLast(node.val);
//                } else {
//                    levelList.offerFirst(node.val);
//                }
//                if (node.left != null) {
//                    queue.offer(node.left);
//                }
//                if (node.right != null) {
//                    queue.offer(node.right);
//                }
//            }
//            ans.add(new LinkedList<Integer>(levelList));
//            isOrderLeft = !isOrderLeft;
//        }
//
//        return ans;
//    }
//}
//
//public class Test1 {
//}
